Advancements in the field of virtualization and shared computing have led to the development of cloud computing. A typical cloud-computing network may include a data centre, in which a large number of computers are connected over a communication network. Such data centers include one or more virtual machine servers that host one or more virtual machines (VMs). These virtual machines may be allocated to cloud customers (hereinafter referred to as the customers) as one or more computational resources for executing various kinds of applications/workloads. Typically, the one or more computational resources may include, but are not limited to, CPU, random access memory (RAM), storage space, software, and so forth.
In a general scenario, the virtual machines offered to the customers are of fixed configuration i.e., for a workload, there exists a virtual machine having a pre-defined configuration for executing the workload. These virtual machines are built upon a physical server (i.e., virtual machine server) such that each virtual machine has a fixed capacity as fixed amount of computational resources of the virtual machine server. As the virtual machines are of fixed configuration, a large amount of unused resources may be left over while consolidating these virtual machines on the virtual machine servers. For example, the configuration of a small virtual machine server is 2 CPUs, 3 GB RAM, and 80 GB disk space and the configuration of the virtual machine having fixed configuration is of 1 CPU, 1 GB RAM, and 30 GB disk space. If two instances of the virtual machine are required to execute a workload and these two instances of the virtual machine are consolidated on the virtual machine server, the two instances of the virtual machine will completely utilize the processing power of the virtual machine server; however, 1 GB RAM and 20 GB disk space will be left over after consolidating the two instances of the virtual machines. Hence, there is a need to utilize the computational resources in the virtual machine server in an efficient manner by precisely customizing the virtual machine capacity (i.e., configuration) for the workload.
Further, with increasing number of cloud service providers, the customers have a number of options to select VMs for execution of the workload. In an embodiment, one of the major factors that play an important role in selecting the cloud service provider is the price of the respective VM being offered to the customers. Hence, there is a need to develop a system or method to determine a competitive price of the virtual machine to the customers.